1 module directx.dcomp;
2 //---------------------------------------------------------------------------
3 // Copyright (c) Microsoft Corporation.  All rights reserved.
4 //---------------------------------------------------------------------------
5 
6 version(Windows):
7 
8 version(Direct2D_1_3)
9     version = Direct2D_1_2;
10 version(Direct2D_1_2)
11     version = Direct2D_1_1;
12 version(Direct2D_1_1):
13     version = Direct2D_1_0;
14     
15 version(Direct2D_1_0):
16 version(DirectComposition):
17 
18 public import directx.com, directx.dcommon;
19 public import directx.dcompanimation;
20 public import directx.d2dbasetypes, directx.d3d9;
21 public import directx.d2d1_1, directx.dcomptypes;
22 
23 extern(Windows)
24 {
25 	extern(Windows):	
26 	/// Creates a new DirectComposition device object, which can be used to create
27 	/// other DirectComposition objects.
28 	HRESULT DCompositionCreateDevice(
29 		IDXGIDevice dxgiDevice,
30 		REFIID iid,
31 		void** dcompositionDevice
32 	);
33 	/// Creates a new DirectComposition device object, which can be used to create
34 	/// other DirectComposition objects.
35 	HRESULT DCompositionCreateDevice2(
36 		IUnknown renderingDevice,
37 		REFIID iid,
38 		void** dcompositionDevice
39 	);
40 	/// Creates a new DirectComposition device object, which can be used to create
41 	/// other DirectComposition objects.
42 	HRESULT DCompositionCreateDevice3(
43 		IUnknown renderingDevice,
44 		REFIID iid,
45 		void** dcompositionDevice
46 	);
47 	/// Creates a new composition surface object, which can be bound to a
48 	/// DirectX swap chain or swap buffer or to a GDI bitmap and associated
49 	/// with a visual.
50 	HRESULT DCompositionCreateSurfaceHandle(
51 		DWORD desiredAccess,
52 		SECURITY_ATTRIBUTES* securityAttributes,
53 		HANDLE* surfaceHandle
54 	);
55 	/// Creates an Interaction/InputSink to route mouse wheel messages to the
56 	/// given HWND. After calling this API, the device owning the visual must
57 	/// be committed.
58 	HRESULT DCompositionAttachMouseWheelToHwnd(
59 		IDCompositionVisual visual,
60 		HWND hwnd,
61 		BOOL enable
62 	);
63 	/// Creates an Interaction/InputSink to route mouse button down and any 
64 	/// subsequent move and up events to the given HWND. There is no move 
65 	/// thresholding; when enabled, all events including and following the down 
66 	/// are unconditionally redirected to the specified window. After calling this 
67 	/// API, the device owning the visual must be committed.
68 	HRESULT DCompositionAttachMouseDragToHwnd(
69 		IDCompositionVisual visual,
70 		HWND hwnd,
71 		BOOL enable
72 	);
73 }
74 
75 mixin(uuid!(IDCompositionDevice, "C37EA93A-E7AA-450D-B16F-9746CB0407F3"));
76 /// Serves as the root factory for all other DirectComposition objects and
77 /// controls transactional composition.
78 interface IDCompositionDevice : IUnknown
79 {
80 	extern(Windows):
81     /// Commits all DirectComposition commands pending on this device.
82 	HRESULT Commit();
83     /// Waits for the last Commit to be processed by the composition engine
84 	HRESULT WaitForCommitCompletion();
85     /// Gets timing information about the composition engine.
86 	HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics);
87     /// Creates a composition target bound to a window represented by an HWND.
88 	HRESULT CreateTargetForHwnd(
89 		HWND hwnd,
90 		BOOL topmost,
91 		IDCompositionTarget* target
92 	);
93     /// Creates a new visual object.
94 	HRESULT CreateVisual(IDCompositionVisual* visual);
95     /// Creates a DirectComposition surface object
96 	HRESULT CraeteSurface(
97 		UINT width,
98 		UINT height,
99 		DXGI_FORMAT pixelFormat,
100 		DXGI_ALPHA_MODE alphaMode,
101 		IDCompositionSurface* surface
102 	);
103     /// Creates a DirectComposition virtual surface object
104 	HRESULT CreateVirtualSurface(
105 		UINT initialWidth,
106 		UINT initialHeight,
107 		DXGI_FORMAT pixelFormat,
108 		DXGI_ALPHA_MODE alphaMode,
109 		IDCompositionVirtualSurface* virtualSurface
110 	);
111     /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition.
112 	HRESULT CreateSurfaceForHandle(
113 		HANDLE handle,
114 		IUnknown* surface
115 	);
116 	/// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition.
117 	HRESULT CreateSurfaceForHwnd(
118 		HWND hwnd,
119 		IUnknown* surface
120 	);
121     /// Creates a 2D translation transform object.
122 	HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform);
123     /// Creates a 2D scale transform object.
124 	HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform);
125     /// Creates a 2D rotation transform object.
126 	HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform);
127     /// Creates a 2D skew transform object.
128 	HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform);
129     /// Creates a 2D 3x2 matrix transform object.
130 	HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform);
131     /// Creates a 2D transform object that holds an array of 2D transform objects.
132 	HRESULT CreateTransformGroup(
133 		IDCompositionTransform* transforms, UINT elements,
134 		IDCompositionTransform* transformGroup
135 	);
136     /// Creates a 3D translation transform object.
137 	HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D);
138     /// Creates a 3D scale transform object.
139 	HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D);
140     /// Creates a 3D rotation transform object.
141 	HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransform3D);
142     /// Creates a 3D 4x4 matrix transform object.
143 	HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D);
144     /// Creates a 3D transform object that holds an array of 3D transform objects.
145 	HRESULT CreateTransform3DGroup(
146 		IDCompositionTransform3D* transform3D, UINT elements,
147 		IDCompositionTransform3D* transform3DGroup
148 	);
149     /// Creates an effect group
150 	HRESULT CreateEffectrGroup(IDCompositionEffectGroup* effectGroup);
151     /// Creates a clip object that can be used to clip the contents of a visual subtree.
152 	HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip);
153     /// Creates an animation object
154 	HRESULT CreateAnimation(IDCompositionAnimation animation);
155     /// Returns the states of the app's DX device and DWM's dx devices
156 	HRESULT CheckDeviceState(BOOL* pfValid);
157 }
158 
159 mixin(uuid!(IDCompositionTarget, "eacdd04c-117e-4e17-88f4-d1b12b0e3d89"));
160 /// An IDCompositionTarget interface represents a binding between a
161 /// DirectComposition visual tree and a destination on top of which the
162 /// visual tree should be composed.
163 interface IDCompositionTarget : IUnknown
164 {
165 	extern(Windows):
166     /// Sets the root visual
167 	HRESULT SetRoot(IDCompositionVisual visual);
168 }
169 
170 mixin(uuid!(IDCompositionVisual, "4d93059d-097b-4651-9a60-f0f25116e2f3"));
171 /// An IDCompositionVisual interface represents a visual that participates in
172 /// a visual tree.
173 interface IDCompositionVisual : IUnknown
174 {
175 	extern(Windows):
176     /// Changes the value of OffsetX property
177 	HRESULT SetOffsetX(float offsetX);
178     /// Animates the value of the OffsetX property.
179 	HRESULT SetOffsetX(IDCompositionAnimation animation);
180     /// Changes the value of OffsetY property
181 	HRESULT SetOffsetY(float offsetY);
182     /// Animates the value of the OffsetY property.
183 	HRESULT SetOffsetY(IDCompositionAnimation animation);
184     /// Sets the matrix that modifies the coordinate system of this visual.
185 	HRESULT SetTransform(const(D2D_MATRIX_3X2_F)* matrix);
186     /// Sets the transformation object that modifies the coordinate system of this visual.
187 	HRESULT SetTransform(IDCompositionTransform transform);
188     /// Sets the visual that should act as this visual's parent for the
189     /// purpose of establishing a base coordinate system.
190 	HRESULT SetTransformParent(IDCompositionVisual visual);
191     /// Sets the effect object that is applied during the rendering of this visual
192 	HRESULT SetEffect(IDCompositionEffect effect);
193     /// Sets the mode to use when interpolating pixels from bitmaps drawn not
194     /// exactly at scale and axis-aligned.
195 	HRESULT SetBitmapInterpolationMode(DCOMPOSITION_BITMAP_INTERPOLATION_MODE interpolationMode);
196     /// Sets the mode to use when drawing the edge of bitmaps that are not
197     /// exactly axis-aligned and at precise pixel boundaries.
198 	HRESULT SetBorderMode(DCOMPOSITION_BORDER_MODE borderMode);
199     /// Sets the clip object that restricts the rendering of this visual to a D2D rectangle.
200 	HRESULT SetClip(const(D2D_RECT_F)* rect);
201     /// Sets the clip object that restricts the rendering of this visual to a rectangle.
202 	HRESULT SetClip(IDCompositionClip clip);
203     /// Associates a bitmap with a visual
204 	HRESULT SetContent(IUnknown content);
205     /// Adds a visual to the children list of another visual.
206 	HRESULT AddVisual(
207 		IDCompositionVisual visual,
208 		BOOL insertAbove,
209 		IDCompositionVisual referenceVisual
210 	);
211     /// Removes a visual from the children list of another visual.
212 	HRESULT RemoveVisual(IDCompositionVisual visual);
213     /// Removes all visuals from the children list of another visual.
214 	HRESULT RemoveAllVisuals();
215     /// Sets the mode to use when composing the bitmap against the render target.
216 	HRESULT SetCompositeMode(DCOMPOSITION_COMPOSITE_MODE compositeMode);
217 }
218 
219 mixin(uuid!(IDCompositionEffect, "EC81B08F-BFCB-4e8d-B193-A915587999E8"));
220 /// An IDCompositionEffect interface represents an effect
221 interface IDCompositionEffect : IUnknown {}
222 mixin(uuid!(IDCompositionTransform3D, "71185722-246B-41f2-AAD1-0443F7F4BFC2"));
223 /// An IDCompositionTransform3D interface represents a 3D transformation.
224 interface IDCompositionTransform3D : IDCompositionEffect {}
225 mixin(uuid!(IDCompositionTransform, "FD55FAA7-37E0-4c20-95D2-9BE45BC33F55"));
226 /// An IDCompositionTransform interface represents a 2D transformation that
227 /// can be used to modify the coordinate space of a visual subtree.
228 interface IDCompositionTransform : IDCompositionTransform3D {}
229 mixin(uuid!(IDCompositionTranslateTransform, "06791122-C6F0-417d-8323-269E987F5954"));
230 /// An IDCompositionTranslateTransform interface represents a 2D transformation
231 /// that affects only the offset of a visual along the x and y axes.
232 interface IDCompositionTranslateTransform : IDCompositionTransform
233 {
234 	extern(Windows):
235     /// Changes the value of the OffsetX property.
236 	HRESULT SetOffsetX(float offsetX);
237     /// Animates the value of the OffsetX property.
238 	HRESULT SetOffsetX(IDCompositionAnimation animation);
239 	/// Changes the value of the OffsetY property.
240 	HRESULT SetOffsetY(float offsetY);
241 	/// Animates the value of the OffsetY property.
242 	HRESULT SetOffsetY(IDCompositionAnimation animation);
243 }
244 
245 mixin(uuid!(IDCompositionScaleTransform, "71FDE914-40EF-45ef-BD51-68B037C339F9"));
246 /// An IDCompositionScaleTransform interface represents a 2D transformation that
247 /// affects the scale of a visual along the x and y axes. The coordinate system
248 /// is scaled from the specified center point.
249 interface IDCompositionScaleTransform : IDCompositionTransform
250 {
251 	extern(Windows):
252     /// Changes the value of the ScaleX property.
253 	HRESULT SetScaleX(float scaleX);
254     /// Animates the value of the ScaleX property.
255 	HRESULT SetScaleX(IDCompositionAnimation animation);
256     /// Changes the value of the ScaleY property.
257 	HRESULT SetScaleY(float scaleY);
258     /// Animates the value of the ScaleY property.
259 	HRESULT SetScaleY(IDCompositionAnimation animation);
260     /// Changes the value of the CenterX property.
261 	HRESULT SetCenterX(float centerX);
262     /// Animates the value of the CenterX property.
263 	HRESULT SetCenterX(IDCompositionAnimation animation);
264     /// Changes the value of the CenterY property.
265 	HRESULT SetCenterY(float centerY);
266     /// Animates the value of the CenterY property.
267 	HRESULT SetCenterY(IDCompositionAnimation animation);
268 }
269 
270 mixin(uuid!(IDCompositionRotateTransform, "641ED83C-AE96-46c5-90DC-32774CC5C6D5"));
271 /// An IDCompositionRotateTransform interface represents a 2D transformation
272 /// that affects the rotation of a visual along the z axis. The coordinate system
273 /// is rotated around the specified center point.
274 interface IDCompositionRotateTransform : IDCompositionTransform
275 {
276 	extern(Windows):
277     /// Changes the value of the Angle property.
278 	HRESULT SetAngle(float angle);
279     /// Animates the value of the Angle property.
280 	HRESULT SetAngle(IDCompositionAnimation animation);
281     /// Changes the value of the CenterX property.
282 	HRESULT SetCenterX(float centerX);
283     /// Animates the value of the CenterX property.
284 	HRESULT SetCenterX(IDCompositionAnimation animation);
285     /// Changes the value of the CenterY property.
286 	HRESULT SetCenterY(float centerY);
287     /// Animates the value of the CenterY property.
288 	HRESULT SetCenterY(IDCompositionAnimation animation);
289 }
290 
291 mixin(uuid!(IDCompositionSkewTransform, "E57AA735-DCDB-4c72-9C61-0591F58889EE"));
292 /// An IDCompositionSkewTransform interface represents a 2D transformation that
293 /// affects the skew of a visual along the x and y axes. The coordinate system
294 /// is skewed around the specified center point.
295 interface IDCompositionSkewTransform : IDCompositionTransform
296 {
297 	extern(Windows):
298     /// Changes the value of the AngleX property.
299 	HRESULT SetAngleX(float angleX);
300     /// Animates the value of the AngleX property.
301 	HRESULT SetAngleX(IDCompositionAnimation animation);
302     /// Changes the value of the AngleY property.
303 	HRESULT SetAngleY(float angleY);
304     /// Animates the value of the AngleY property.
305 	HRESULT SetAngleY(IDCompositionAnimation animation);
306     /// Changes the value of the CenterX property.
307 	HRESULT SetCenterX(float centerX);
308     /// Animates the value of the CenterX property.
309 	HRESULT SetCenterX(IDCompositionAnimation animation);
310     /// Changes the value of the CenterY property.
311 	HRESULT SetCenterY(float centerY);
312     /// Animates the value of the CenterY property.
313 	HRESULT SetCenterY(IDCompositionAnimation animation);
314 }
315 
316 mixin(uuid!(IDCompositionMatrixTransform, "16CDFF07-C503-419c-83F2-0965C7AF1FA6"));
317 /// An IDCompositionMatrixTransform interface represents an arbitrary affine
318 /// 2D transformation defined by a 3x2 matrix.
319 interface IDCompositionMatrixTransform : IDCompositionTransform
320 {
321 	extern(Windows):
322     /// Changes all values of the matrix of this transform.
323 	HRESULT SetMatrix(const(D2D_MATRIX_3X2_F)* matrix);
324     /// Changes a single element of the matrix of this transform.
325 	HRESULT SetMatrixElement(int row, int column, float value);
326     /// Animates a single element of the matrix of this transform.
327 	HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
328 }
329 
330 mixin(uuid!(IDCompositionEffectGroup, "A7929A74-E6B2-4bd6-8B95-4040119CA34D"));
331 /// An IDCompositionEffectGroup holds effects, inluding 3D transforms that can
332 /// be applied to a visual.
333 interface IDCompositionEffectGroup : IDCompositionEffect
334 {
335 	extern(Windows):
336     /// Changes the opacity property.
337 	HRESULT SetOpacity(float opacity);
338     /// Animates the opacity property
339 	HRESULT SetOpacity(IDCompositionAnimation animation);
340     /// Sets the 3D transform
341 	HRESULT SetTransform3D(IDCompositionTransform3D transform3D);
342 }
343 
344 mixin(uuid!(IDCompositionTranslateTransform3D, "91636D4B-9BA1-4532-AAF7-E3344994D788"));
345 /// An IDCompositionTranslateTransform3D interface represents a 3D transformation
346 /// that affects the offset of a visual along the x,y and z axes.
347 interface IDCompositionTranslateTransform3D : IDCompositionTransform3D
348 {
349 	extern(Windows):
350     /// Changes the value of the OffsetX property.
351 	HRESULT SetOffsetX(float offsetX);
352     /// Animates the value of the OffsetX property.
353 	HRESULT SetOffsetX(IDCompositionAnimation animation);
354 	/// Changes the value of the OffsetY property.
355 	HRESULT SetOffsetY(float offsetY);
356     /// Animates the value of the OffsetY property.
357 	HRESULT SetOffsetY(IDCompositionAnimation animation);
358 	/// Changes the value of the OffsetZ property.
359 	HRESULT SetOffsetZ(float offsetZ);
360     /// Animates the value of the OffsetZ property.
361 	HRESULT SetOffsetZ(IDCompositionAnimation animation);
362 }
363 
364 mixin(uuid!(IDCompositionScaleTransform3D, "2A9E9EAD-364B-4b15-A7C4-A1997F78B389"));
365 /// An IDCompositionScaleTransform3D interface represents a 3D transformation that
366 /// affects the scale of a visual along the x, y and z axes. The coordinate system
367 /// is scaled from the specified center point.
368 interface IDCompositionScaleTransform3D : IDCompositionTransform3D
369 {
370 	extern(Windows):
371     /// Changes the value of the ScaleX property.
372 	HRESULT SetScaleX(float scaleX);
373     /// Animates the value of the ScaleX property.
374 	HRESULT SetScaleX(IDCompositionAnimation animation);
375     /// Changes the value of the ScaleY property.
376 	HRESULT SetScaleY(float scaleY);
377     /// Animates the value of the ScaleY property.
378 	HRESULT SetScaleY(IDCompositionAnimation animation);
379     /// Changes the value of the ScaleZ property.
380 	HRESULT SetScaleZ(float scaleZ);
381     /// Animates the value of the ScaleZ property.
382 	HRESULT SetScaleZ(IDCompositionAnimation animation);
383     /// Changes the value of the CenterX property.
384 	HRESULT SetCenterX(float centerX);
385     /// Animates the value of the CenterX property.
386 	HRESULT SetCenterX(IDCompositionAnimation animation);
387     /// Changes the value of the CenterY property.
388 	HRESULT SetCenterY(float centerY);
389     /// Animates the value of the CenterY property.
390 	HRESULT SetCenterY(IDCompositionAnimation animation);
391     /// Changes the value of the CenterZ property.
392 	HRESULT SetCenterZ(float centerZ);
393     /// Animates the value of the CenterZ property.
394 	HRESULT SetCenterZ(IDCompositionAnimation animation);
395 }
396 
397 mixin(uuid!(IDCompositionRotateTransform3D, "D8F5B23F-D429-4a91-B55A-D2F45FD75B18"));
398 /// An IDCompositionRotateTransform3D interface represents a 3D transformation
399 /// that affects the rotation of a visual along the specified axis at the
400 /// specified center point.
401 interface IDCompositionRotateTransform3D : IDCompositionTransform3D
402 {
403 	extern(Windows):
404     /// Changes the value of the Angle property.
405 	HRESULT SetAngle(float angle);
406     /// Animates the value of the Angle property.
407 	HRESULT SetAngle(IDCompositionAnimation animation);
408     /// Changes the value of the AxisX property.
409 	HRESULT SetAxisX(float axisX);
410     /// Animates the value of the AxisX property.
411 	HRESULT SetAxisX(IDCompositionAnimation animation);
412     /// Changes the value of the AxisY property.
413 	HRESULT SetAxisY(float axisY);
414     /// Animates the value of the AxisY property.
415     HRESULT SetAxisY(IDCompositionAnimation animation);
416     /// Changes the value of the AxisZ property.
417     HRESULT SetAxisZ(float axisZ);
418     /// Animates the value of the AxisZ property.
419     HRESULT SetAxisZ(IDCompositionAnimation animation);
420     /// Changes the value of the CenterX property.
421     HRESULT SetCenterX(float centerX);
422     /// Animates the value of the CenterX property.
423     HRESULT SetCenterX(IDCompositionAnimation animation);
424     /// Changes the value of the CenterY property.
425     HRESULT SetCenterY(float centerY);
426     /// Animates the value of the CenterY property.
427     HRESULT SetCenterY(IDCompositionAnimation animation);
428     /// Changes the value of the CenterZ property.
429     HRESULT SetCenterZ(float centerZ);
430     /// Animates the value of the CenterZ property.
431 	HRESULT SetCenterZ(IDCompositionAnimation animation);
432 }
433 
434 mixin(uuid!(IDCompositionMatrixTransform3D, "4B3363F0-643B-41b7-B6E0-CCF22D34467C"));
435 /// An IDCompositionMatrixTransform3D interface represents an arbitrary
436 /// 3D transformation defined by a 4x4 matrix.
437 interface IDCompositionMatrixTransform3D : IDCompositionTransform3D
438 {
439 	extern(Windows):
440     /// Changes all values of the matrix of this transform.
441     HRESULT SetMatrix(const(D3DMATRIX)* matrix);
442     /// Changes a single element of the matrix of this transform.
443     HRESULT SetMatrixElement(int row, int column, float value);
444     /// Animates a single element of the matrix of this transform.
445     HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
446 }
447 mixin(uuid!(IDCompositionClip, "64AC3703-9D3F-45ec-A109-7CAC0E7A13A7"));
448 /// An IDCompositionClip interface represents a rectangle that restricts the
449 /// rasterization of a visual subtree.
450 interface IDCompositionClip : IUnknown {}
451 mixin(uuid!(IDCompositionRectangleClip, "9842AD7D-D9CF-4908-AED7-48B51DA5E7C2"));
452 /// An IDCompositionRectangleClip interface represents a rectangle that restricts
453 /// the rasterization of a visual subtree.
454 interface IDCompositionRectangleClip : IDCompositionClip
455 {
456 	extern(Windows):
457     /// Changes the value of the Left property.
458     HRESULT SetLeft(float left);
459     /// Animates the value of the Left property.
460     HRESULT SetLeft(IDCompositionAnimation animation);
461     /// Changes the value of the Top property.
462     HRESULT SetTop(float top);
463     /// Animates the value of the Top property.
464     HRESULT SetTop(IDCompositionAnimation animation);
465     /// Changes the value of the Right property.
466     HRESULT SetRight(float right);
467     /// Animates the value of the Right property.
468     HRESULT SetRight(IDCompositionAnimation animation);
469     /// Changes the value of the Bottom property.
470     HRESULT SetBottom(float bottom);
471     /// Animates the value of the Bottom property.
472     HRESULT SetBottom(IDCompositionAnimation animation);
473     /// Changes the value of the x radius of the ellipse that rounds the
474     /// top-left corner of the clip.
475     HRESULT SetTopLeftRadiusX(float radius);
476     /// Animates the value of the x radius of the ellipse that rounds the
477     /// top-left corner of the clip.
478     HRESULT SetTopLeftRadiusX(IDCompositionAnimation animation);
479     /// Changes the value of the y radius of the ellipse that rounds the
480     /// top-left corner of the clip.
481     HRESULT SetTopLeftRadiusY(float radius);
482     /// Animates the value of the y radius of the ellipse that rounds the
483     /// top-left corner of the clip.
484     HRESULT SetTopLeftRadiusY(IDCompositionAnimation animation);
485     /// Changes the value of the x radius of the ellipse that rounds the
486     /// top-right corner of the clip.
487     HRESULT SetTopRightRadiusX(float radius);
488     /// Animates the value of the x radius of the ellipse that rounds the
489     /// top-right corner of the clip.
490     HRESULT SetTopRightRadiusX(IDCompositionAnimation animation);
491     /// Changes the value of the y radius of the ellipse that rounds the
492     /// top-right corner of the clip.
493     HRESULT SetTopRightRadiusY(float radius);
494     /// Animates the value of the y radius of the ellipse that rounds the
495     /// top-right corner of the clip.
496     HRESULT SettopRightRadiusY(IDCompositionAnimation animation);
497     /// Changes the value of the x radius of the ellipse that rounds the
498     /// bottom-left corner of the clip.
499     HRESULT SetBottomLeftRadiusX(float radius);
500     /// Animates the value of the x radius of the ellipse that rounds the
501     /// bottom-left corner of the clip.
502     HRESULT SetBottomLeftRadiusX(IDCompositionAnimation animation);
503     /// Changes the value of the y radius of the ellipse that rounds the
504     /// bottom-left corner of the clip.
505     HRESULT SetBottomLeftRadiusY(float radius);
506     /// Animates the value of the y radius of the ellipse that rounds the
507     /// bottom-left corner of the clip.
508     HRESULT SetBottomLeftRadiusY(IDCompositionAnimation animation);
509     /// Changes the value of the x radius of the ellipse that rounds the
510     /// bottom-right corner of the clip.
511     HRESULT SetBottomRightRadiusX(float radius);
512     /// Animates the value of the x radius of the ellipse that rounds the
513     /// bottom-right corner of the clip.
514     HRESULT SetBottomRightRadiusX(IDCompositionAnimation animation);
515     /// Changes the value of the y radius of the ellipse that rounds the
516     /// bottom-right corner of the clip.
517     HRESULT SetBottomRightRadiusY(float radius);
518     /// Animates the value of the y radius of the ellipse that rounds the
519     /// bottom-right corner of the clip.
520     HRESULT SetBottomRightRadiusY(IDCompositionAnimation animation);
521 }
522 
523 mixin(uuid!(IDCompositionSurface, "BB8A4953-2C99-4F5A-96F5-4819027FA3AC"));
524 /// An IDCompositionSurface interface represents a wrapper around a DirectX
525 /// object, or a sub-rectangle of one of those objects.
526 interface IDCompositionSurface : IUnknown
527 {
528 	extern(Windows):
529 	HRESULT BeginDraw(const(RECT)* updateRect, REFIID iid, void** updateObject, POINT* updateOffset);
530 	HRESULT EndDraw();
531 	HRESULT SuspendDraw();
532 	HRESULT ResumeDraw();
533 	HRESULT Scroll(
534 		const(RECT)* scrollRect,
535 		const(RECT)* clipRect,
536 		int offsetX,
537 		int offsetY);
538 }
539 mixin(uuid!(IDCompositionVirtualSurface, "AE471C51-5F53-4A24-8D3E-D0C39C30B3F0"));
540 /// An IDCompositionVirtualSurface interface represents a sparsely
541 /// allocated surface.
542 interface IDCompositionVirtualSurface : IDCompositionSurface
543 {
544 	extern(Windows):
545 	HRESULT Resize(UINT width, UINT height);
546 	HRESULT Trim(const(RECT)* rectangles, UINT count);
547 }
548 
549 mixin(uuid!(IDCompositionDevice2, "75F6468D-1B8E-447C-9BC6-75FEA80B5B25"));
550 /// Serves as the root factory for all other DirectComposition2 objects and
551 /// controls transactional composition.
552 interface IDCompositionDevice2 : IUnknown
553 {
554 	extern(Windows):
555     /// Commits all DirectComposition commands pending on this device.
556     HRESULT Commit();
557     /// Waits for the last Commit to be processed by the composition engine
558     HRESULT WaitForCommitCompletion();
559     /// Gets timing information about the composition engine.
560     HRESULT GetFrameStatistics(DCOMPOSITION_FRAME_STATISTICS* statistics);
561     /// Creates a new visual object.
562     HRESULT CreateVisual(IDCompositionVisual2* visual);
563     /// Creates a factory for surface objects
564     HRESULT CreateSurfaceFactory(IUnknown renderingDevice, IDCompositionSurfaceFactory* surfaceFactory);
565     /// Creates a DirectComposition surface object
566     HRESULT CreateSurface(
567 		UINT width,
568 		UINT height,
569 		DXGI_FORMAT pixelFormat,
570 		DXGI_ALPHA_MODE alphaMode,
571 		IDCompositionSurface* surface);
572     /// Creates a DirectComposition virtual surface object
573     HRESULT CreateVirtualSurface(
574 		UINT initialWidth,
575 		UINT initialHeight,
576 		DXGI_FORMAT pixelFormat,
577 		DXGI_ALPHA_MODE alphaMode,
578 		IDCompositionVirtualSurface* virtualSurface);
579     /// Creates a 2D translation transform object.
580     HRESULT CreateTranslateTransform(IDCompositionTranslateTransform* translateTransform);
581     /// Creates a 2D scale transform object.
582     HRESULT CreateScaleTransform(IDCompositionScaleTransform* scaleTransform);
583     /// Creates a 2D rotation transform object.
584     HRESULT CreateRotateTransform(IDCompositionRotateTransform* rotateTransform);
585     /// Creates a 2D skew transform object.
586     HRESULT CreateSkewTransform(IDCompositionSkewTransform* skewTransform);
587     /// Creates a 2D 3x2 matrix transform object.
588     HRESULT CreateMatrixTransform(IDCompositionMatrixTransform* matrixTransform);
589     /// Creates a 2D transform object that holds an array of 2D transform objects.
590     HRESULT CreateTransformGroup(
591 		IDCompositionTransform* transforms, UINT elements,
592 		IDCompositionTransform* transformGroup);
593     /// Creates a 3D translation transform object.
594     HRESULT CreateTranslateTransform3D(IDCompositionTranslateTransform3D* translateTransform3D);
595     /// Creates a 3D scale transform object.
596     HRESULT CreateScaleTransform3D(IDCompositionScaleTransform3D* scaleTransform3D);
597     /// Creates a 3D rotation transform object.
598 	HRESULT CreateRotateTransform3D(IDCompositionRotateTransform3D* rotateTransfrom3D);
599     /// Creates a 3D 4x4 matrix transform object.
600 	HRESULT CreateMatrixTransform3D(IDCompositionMatrixTransform3D* matrixTransform3D);
601     /// Creates a 3D transform object that holds an array of 3D transform objects.
602 	HRESULT CreateTransform3DGroup(
603 		IDCompositionTransform3D* transforms3D, UINT elements,
604 		IDCompositionTransform3D* transform3DGroup);
605     /// Creates an effect group
606 	HRESULT CreateEffectGroup(IDCompositionEffectGroup* effectGroup);
607     /// Creates a clip object that can be used to clip the contents of a visual subtree.
608     HRESULT CreateRectangleClip(IDCompositionRectangleClip* clip);
609     /// Creates an animation object
610 	HRESULT CreateAnimation(IDCompositionAnimation animation);
611 }
612 
613 mixin(uuid!(IDCompositionDesktopDevice, "5F4633FE-1E08-4CB8-8C75-CE24333F5602"));
614 /// Serves as the root factory for all other desktop DirectComposition
615 /// objects.
616 interface IDCompositionDesktopDevice : IDCompositionDevice2
617 {
618 	extern(Windows):
619 	HRESULT CreateTargetForHwnd(HWND hwnd, BOOL topmost, IDCompositionTarget* target);
620     /// Creates a surface wrapper around a pre-existing surface that can be associated with one or more visuals for composition.
621     HRESULT CreateSurfaceFromHandle(HANDLE handle, IUnknown* surface);
622     /// Creates a wrapper object that represents the rasterization of a layered window and which can be associated with a visual for composition.
623     HRESULT CreateSurfaceFromHwnd(HWND hwnd, IUnknown* surface);
624 }
625 
626 mixin(uuid!(IDCompositionDeviceDebug, "A1A3C64A-224F-4A81-9773-4F03A89D3C6C"));
627 /// IDCompositionDeviceDebug serves as a debug interface
628 interface IDCompositionDeviceDebug : IUnknown
629 {
630 	extern(Windows):
631     /// Enables debug counters
632 	HRESULT EnableDebugCounters();
633     /// Enables debug counters
634 	HRESULT DisableDebugCounters();
635 }
636 
637 mixin(uuid!(IDCompositionSurfaceFactory, "E334BC12-3937-4E02-85EB-FCF4EB30D2C8"));
638 /// An IDCompositionSurfaceFactory interface represents an object that can
639 /// create surfaces suitable for composition.
640 interface IDCompositionSurfaceFactory : IUnknown
641 {
642 	extern(Windows):
643     /// Creates a DirectComposition surface object
644     HRESULT CreateSurface(
645 		UINT width,
646 		UINT height,
647 		DXGI_FORMAT pixelFormat,
648 		DXGI_ALPHA_MODE alphaMode,
649 		IDCompositionSurface* surface);
650     /// Creates a DirectComposition virtual surface object
651     HRESULT CreateVirtualSurface(
652 		UINT initialWidth,
653 		UINT initialHeight,
654 		DXGI_FORMAT pixelFormat,
655 		DXGI_ALPHA_MODE alphaMode,
656 		IDCompositionVirtualSurface* virtualSurface);
657 }
658 
659 mixin(uuid!(IDCompositionVisual2, "E8DE1639-4331-4B26-BC5F-6A321D347A85"));
660 /// An IDCompositionVisual2 interface represents a visual that participates in
661 /// a visual tree.
662 interface IDCompositionVisual2 : IDCompositionVisual
663 {
664 	extern(Windows):
665     /// Changes the interpretation of the opacity property of an effect group
666     /// associated with this visual
667     HRESULT SetOpacityMode(DCOMPOSITION_OPACITY_MODE mode);
668     /// Sets back face visibility
669     HRESULT SetBackFaceVisibility(DCOMPOSITION_BACKFACE_VISIBILITY visibility);
670 }
671 
672 mixin(uuid!(IDCompositionVisualDebug, "FED2B808-5EB4-43A0-AEA3-35F65280F91B"));
673 /// An IDCompositionVisualDebug interface represents a debug visual
674 interface IDCompositionVisualDebug : IDCompositionVisual2
675 {
676 	extern(Windows):
677     /// Enable heat map
678     HRESULT EnableHeatMap(const(D2D1_COLOR_F)* color);
679     /// Disable heat map
680     HRESULT DisableHeatMap();
681     /// Enable redraw regions
682 	HRESULT EnableRedrawRegions();
683     /// Disable redraw regions
684 	HRESULT DisableRedrawRegions();
685 }
686 
687 mixin(uuid!(IDCompositionVisual3, "2775F462-B6C1-4015-B0BE-B3E7D6A4976D"));
688 /// An IDCompositionVisual3 interface represents a visual that participates in
689 /// a visual tree.
690 interface IDCompositionVisual3 : IDCompositionVisualDebug
691 {
692 	extern(Windows):
693     /// Sets depth mode property associated with this visual
694     HRESULT SetDepthMode(DCOMPOSITION_DEPTH_MODE mode);
695     /// Changes the value of OffsetZ property.
696     HRESULT SetOffsetZ(float offsetZ);
697     /// Animates the value of the OffsetZ property.
698     HRESULT SetOffsetZ(IDCompositionAnimation animation);
699     /// Changes the value of the Opacity property.
700     HRESULT SetOpacity(float opacity);
701     /// Animates the value of the Opacity property.
702     HRESULT SetOpacity(IDCompositionAnimation animation);
703     /// Sets the matrix that modifies the coordinate system of this visual.
704     HRESULT SetTransform(const(D2D_MATRIX_4X4_F)* matrix);
705     /// Sets the transformation object that modifies the coordinate system of this visual.
706     HRESULT SetTransform(IDCompositionTransform3D transform);
707     /// Changes the value of the Visible property
708     HRESULT SetVisible(BOOL visible);
709 }
710 
711 mixin(uuid!(IDCompositionDevice3, "0987CB06-F916-48BF-8D35-CE7641781BD9"));
712 /// Serves as the root factory for all other DirectComposition3 objects and
713 /// controls transactional composition.
714 interface IDCompositionDevice3 : IDCompositionDevice2
715 {
716 	extern(Windows):
717     /// Effect creation calls, each creates an interface around a D2D1Effect
718     HRESULT CreateGaussianBlurEffect(IDCompositionGaussianBlurEffect* gaussianBlurEffect);
719 	HRESULT CreateBrightnessEffect(IDCompositionBrightnessEffect* brightnessEffect);
720     HRESULT CreateColorMatrixEffect(IDCompositionColorMatrixEffect* colorMatrixEffect);
721 	HRESULT CreateShadowEffect(IDCompositionShadowEffect* shadowEffect);
722     HRESULT CreateHueRotationEffect(IDCompositionHueRotationEffect* hueRotationEffect);
723     HRESULT CreateSaturationEffect(IDCompositionSaturationEffect* saturationEffect);
724     HRESULT CreateTurbulenceEffect(IDCompositionTurbulenceEffect* turbulenceEffect);
725     HRESULT CreateLinearTransferEffect(IDCompositionLinearTransferEffect* linearTransferEffect);
726     HRESULT CreateTableTransferEffect(IDCompositionTableTransferEffect* tableTransferEffect);
727     HRESULT CreateCompositeEffect(IDCompositionCompositeEffect* compositeEffect);
728     HRESULT CreateBlendEffect(IDCompositionBlendEffect* blendEffect);
729 	HRESULT CreateArithmeticCompositeEffect(IDCompositionArithmeticCompositeEffect* arithmeticCompositeEffect);
730     HRESULT CreateAffineTransform2DEffect(IDCompositionAffineTransform2DEffect* affineTransform2dEffect);
731 }
732 
733 mixin(uuid!(IDCompositionFilterEffect, "30C421D5-8CB2-4E9F-B133-37BE270D4AC2"));
734 /// An IDCompositionFilterEffect interface represents a filter effect
735 interface IDCompositionFilterEffect : IDCompositionEffect
736 {
737 	extern(Windows):
738     /// Sets the input at the given index to the filterEffect (NULL will use source visual, unless flagged otherwise)
739     HRESULT SetInput(UINT index, IUnknown input, UINT flags);
740 }
741 
742 mixin(uuid!(IDCompositionGaussianBlurEffect, "45D4D0B7-1BD4-454E-8894-2BFA68443033"));
743 /// An IDCompositionGaussianBlurEffect interface represents a gaussian blur filter effect
744 interface IDCompositionGaussianBlurEffect : IDCompositionFilterEffect
745 {
746 	extern(Windows):
747     /// Changes the amount of blur to be applied.
748     HRESULT SetStandardDeviation(float amount);
749     HRESULT SetStandardDeviation(IDCompositionAnimation animation);
750     /// Changes border mode (see D2D1_GAUSSIANBLUR)
751     HRESULT SetBorderMode(D2D1_BORDER_MODE mode);
752 }
753 
754 mixin(uuid!(IDCompositionBrightnessEffect, "6027496E-CB3A-49AB-934F-D798DA4F7DA6"));
755 /// An IDCompositionBrightnessEffect interface represents a brightness filter effect
756 interface IDCompositionBrightnessEffect : IDCompositionFilterEffect
757 {
758 	extern(Windows):
759     /// Changes the value of white point property.
760     HRESULT SetWhitePoint(const(D2D1_VECTOR_2F)* whitePoint);
761     /// Changes the value of black point property
762     HRESULT SetBlackPoint(const(D2D1_VECTOR_2F)* blackPoint);
763     /// Changes the X value of the white point property.
764     HRESULT SetWhitePointX(float whitePointX);
765     HRESULT SetWhitePointX(IDCompositionAnimation animation);
766     /// Changes the Y value of the white point property.
767     HRESULT SetWhitePointY(float whitePointY);
768     HRESULT SetWhitePointY(IDCompositionAnimation animation);
769     /// Changes the X value of the black point property.
770     HRESULT SetBlackPointX(float blackPointX);
771     HRESULT SetBlackPointX(IDCompositionAnimation animation);
772     /// Changes the Y value of the black point property.
773     HRESULT SetBlackPointY(float blackPointY);
774     HRESULT SetBlackPointY(IDCompositionAnimation animation);
775 }
776 
777 mixin(uuid!(IDCompositionColorMatrixEffect, "C1170A22-3CE2-4966-90D4-55408BFC84C4"));
778 /// An IDCompositionColorMatrixEffect interface represents a color matrix filter effect
779 interface IDCompositionColorMatrixEffect : IDCompositionFilterEffect
780 {
781 	extern(Windows):
782     /// Changes all values of the matrix for a color transform
783     HRESULT SetMatrix(const(D2D1_MATRIX_5X4_F)* matrix);
784     /// Changes a single element of the matrix of this color transform.
785     HRESULT SetMatrixElement(int row, int column, float value);
786     /// Animates a single element of the matrix of this color transform.
787     HRESULT SetMatrixElement(int row, int column, IDCompositionAnimation animation);
788     /// Changes the alpha mode
789     HRESULT SetAlphaMode(D2D1_COLORMATRIX_ALPHA_MODE mode);
790     /// Sets the clamp output property
791     HRESULT SetClampOutput(BOOL clamp);
792 }
793 
794 mixin(uuid!(IDCompositionShadowEffect, "4AD18AC0-CFD2-4C2F-BB62-96E54FDB6879"));
795 /// An IDCompositionShadowEffect interface represents a shadow filter effect
796 interface IDCompositionShadowEffect : IDCompositionFilterEffect
797 {
798 	extern(Windows):
799     /// Changes the amount of blur to be applied.
800     HRESULT SetStandardDeviation(float amount);
801     HRESULT SetStandardDeviation(IDCompositionAnimation animation);
802     /// Changes shadow color
803     HRESULT SetColor(const(D2D1_VECTOR_4F)* color);
804     HRESULT SetRed(float amount);
805     HRESULT SetRed(IDCompositionAnimation animation);
806     HRESULT SetGreen(float amount);
807     HRESULT SetGreen(IDCompositionAnimation animation);
808     HRESULT SetBlue(float amount);
809     HRESULT SetBlue(IDCompositionAnimation animation);
810     HRESULT SetAlpha(float amount);
811     HRESULT SetAlpha(IDCompositionAnimation animation);
812 }
813 
814 mixin(uuid!(IDCompositionHueRotationEffect, "6DB9F920-0770-4781-B0C6-381912F9D167"));
815 /// An IDCompositionHueRotationEffect interface represents a hue rotation filter effect
816 interface IDCompositionHueRotationEffect : IDCompositionFilterEffect
817 {
818 	extern(Windows):
819     /// Changes the angle of rotation
820     HRESULT SetAngle(float amountDegrees);
821     HRESULT SetAngle(IDCompositionAnimation animation);
822 }
823 
824 mixin(uuid!(IDCompositionSaturationEffect, "A08DEBDA-3258-4FA4-9F16-9174D3FE93B1"));
825 /// An IDCompositionSaturationEffect interface represents a saturation filter effect
826 interface IDCompositionSaturationEffect : IDCompositionFilterEffect
827 {
828 	extern(Windows):
829     /// Changes the amount of saturation to be applied.
830     HRESULT SetSaturation(float ratio);
831     HRESULT SetSaturation(IDCompositionAnimation animation);
832 }
833 
834 mixin(uuid!(IDCompositionTurbulenceEffect, "A6A55BDA-C09C-49F3-9193-A41922C89715"));
835 /// An IDCompositionTurbulenceEffect interface represents a turbulence filter effect
836 interface IDCompositionTurbulenceEffect : IDCompositionFilterEffect
837 {
838 	extern(Windows):
839     /// Changes the starting offset of the turbulence
840     HRESULT SetOffset(const(D2D1_VECTOR_2F)* offset);
841     /// Changes the base frequency of the turbulence
842     HRESULT SetBaseFrequency(const(D2D1_VECTOR_2F)* frequency);
843     /// Changes the output size of the turbulence
844     HRESULT SetSize(const(D2D1_VECTOR_2F)* size);
845     /// Sets the number of octaves
846     HRESULT SetNumOctaves(UINT numOctaves);
847     /// Set the random number seed
848     HRESULT SetSeed(UINT seed);
849     /// Set the noise mode
850     HRESULT SetNoise(D2D1_TURBULENCE_NOISE noise);
851     /// Set stitchable
852     HRESULT SetStitchable(BOOL stitchable);
853 }
854 
855 mixin(uuid!(IDCompositionLinearTransferEffect, "4305EE5B-C4A0-4C88-9385-67124E017683"));
856 /// An IDCompositionLinearTransferEffect interface represents a linear transfer filter effect
857 interface IDCompositionLinearTransferEffect : IDCompositionFilterEffect
858 {
859 	extern(Windows):
860     HRESULT SetRedYIntercept(float redYIntercept);
861     HRESULT SetRedYIntercept(IDCompositionAnimation animation);
862     HRESULT SetRedSlope(float redSlope);
863     HRESULT SetRedSlope(IDCompositionAnimation animation);
864     HRESULT SetRedDisable(BOOL redDisable);
865     HRESULT SetGreenYIntercept(float greenYIntercept);
866     HRESULT SetGreenYIntercept(IDCompositionAnimation animation);
867     HRESULT SetGreenSlope(float greenSlope);
868     HRESULT SetGreenSlope(IDCompositionAnimation animation);
869     HRESULT SetGreenDisable(BOOL greenDisable);
870     HRESULT SetBlueYIntercept(float blueYIntercept);
871     HRESULT SetBlueYIntercept(IDCompositionAnimation animation);
872     HRESULT SetBlueSlope(float blueSlope);
873     HRESULT SetBlueSlope(IDCompositionAnimation animation);
874     HRESULT SetBlueDisable(BOOL blueDisable);
875     HRESULT SetAlphaYIntercept(float alphaYIntercept);
876     HRESULT SetAlphaYIntercept(IDCompositionAnimation animation);
877     HRESULT SetAlphaSlope(float alphaSlope);
878     HRESULT SetAlphaSlope(IDCompositionAnimation animation);
879     HRESULT SetAlphaDisable(BOOL alphaDisable);
880     HRESULT SetClampOutput(BOOL clampOutput);
881 }
882 
883 mixin(uuid!(IDCompositionTableTransferEffect, "9B7E82E2-69C5-4EB4-A5F5-A7033F5132CD"));
884 /// An IDCompositionTableTransferEffect interface represents a Table transfer filter effect
885 interface IDCompositionTableTransferEffect : IDCompositionFilterEffect
886 {
887 	extern(Windows):
888     HRESULT SetRedTable(const(float)* tableValues, UINT count);
889     HRESULT SetGreenTable(const(float)* tableValues, UINT count);
890     HRESULT SetBlueTable(const(float)* tableValues, UINT count);
891     HRESULT SetAlphaTable(const(float)* tableValues, UINT count);
892     HRESULT SetRedDisable(BOOL redDisable);
893     HRESULT SetGreenDisable(BOOL greenDisable);
894     HRESULT SetBlueDisable(BOOL blueDisable);
895     HRESULT SetAlphaDisable(BOOL alphaDisable);
896     HRESULT SetClampOutput(BOOL clampOutput);
897     /// Note:  To set individual values, the table must have already been initialized
898     ////   with a buffer of values of the appropriate size, or these calls will fail
899     HRESULT SetRedTableValue(UINT index, float value);
900     HRESULT SetRedTableValue(UINT index, IDCompositionAnimation animation);
901     HRESULT SetGreenTableValue(UINT index, float value);
902     HRESULT SetGreenTableValue(UINT index, IDCompositionAnimation animation);
903     HRESULT SetBlueTableValue(UINT index, float value);
904     HRESULT SetBlueTableValue(UINT index, IDCompositionAnimation animation);
905     HRESULT SetAlphaTableValue(UINT index, float value);
906     HRESULT SetAlphaTableValue(UINT index, IDCompositionAnimation animation);
907 }
908 
909 mixin(uuid!(IDCompositionCompositeEffect, "576616C0-A231-494D-A38D-00FD5EC4DB46"));
910 /// An IDCompositionCompositeEffect interface represents a composite filter effect
911 interface IDCompositionCompositeEffect : IDCompositionFilterEffect
912 {
913 	extern(Windows):
914     /// Changes the composite mode.
915     HRESULT SetMode(D2D1_COMPOSITE_MODE mode);
916 }
917 
918 mixin(uuid!(IDCompositionBlendEffect, "33ECDC0A-578A-4A11-9C14-0CB90517F9C5"));
919 /// An IDCompositionBlendEffect interface represents a blend filter effect
920 interface IDCompositionBlendEffect : IDCompositionFilterEffect
921 {
922 	extern(Windows):
923     HRESULT SetMode(D2D1_BLEND_MODE mode);
924 }
925 
926 mixin(uuid!(IDCompositionArithmeticCompositeEffect, "3B67DFA8-E3DD-4E61-B640-46C2F3D739DC"));
927 /// An IDCompositionArithmeticCompositeEffect interface represents an arithmetic composite filter effect
928 interface IDCompositionArithmeticCompositeEffect : IDCompositionFilterEffect
929 {
930 	extern(Windows):
931     HRESULT SetCoefficients(const(D2D1_VECTOR_4F)* coefficients);
932     HRESULT SetClampOutput(BOOL clampoutput);
933     HRESULT SetCoefficient1(float Coeffcient1);
934     HRESULT SetCoefficient1(IDCompositionAnimation animation);
935     HRESULT SetCoefficient2(float Coefficient2);
936     HRESULT SetCoefficient2(IDCompositionAnimation animation);
937     HRESULT SetCoefficient3(float Coefficient3);
938     HRESULT SetCoefficient3(IDCompositionAnimation animation);
939     HRESULT SetCoefficient4(float Coefficient4);
940     HRESULT SetCoefficient4(IDCompositionAnimation animation);
941 }
942 
943 mixin(uuid!(IDCompositionAffineTransform2DEffect, "0B74B9E8-CDD6-492F-BBBC-5ED32157026D"));
944 /// An IDCompositionAffineTransform2DEffect interface represents a affine transform 2D filter effect
945 interface IDCompositionAffineTransform2DEffect : IDCompositionFilterEffect
946 {
947 	extern(Windows):
948     HRESULT SetInterpolationMode(D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE interpolationMode);
949     HRESULT SetBorderMode(D2D1_BORDER_MODE borderMode);
950     HRESULT SetTransformMatrix(const(D2D1_MATRIX_3X2_F)* transformMatrix);
951     HRESULT SetTransformMatrixElement(int row, int column, float value);
952     HRESULT SetTransformMatrixElement(int row, int column, IDCompositionAnimation animation);
953     HRESULT SetSharpness(float sharpness);
954     HRESULT SetSharpness(IDCompositionAnimation animation);
955 }